# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=fuse3
pkgver=3.16.2
pkgrel=0
pkgdesc="Reference implementation of the Linux FUSE (Filesystem in Userspace) interface"
url="https://github.com/libfuse/libfuse"
arch="all"
license="GPL-2.0-only AND LGPL-2.1-only"
depends="fuse-common"
makedepends="
	eudev-dev
	gettext-dev
	linux-headers
	meson
	"
checkdepends="py3-pytest"
subpackages="
	$pkgname-static
	$pkgname-dev
	$pkgname-doc
	$pkgname-libs
	fuse-common:_common
	fuse-openrc:_openrc
	"
source="https://github.com/libfuse/libfuse/releases/download/fuse-$pkgver/fuse-$pkgver.tar.gz
	fuse.initd
	dont-mknod-dev-fuse.patch
	"
options="suid !check" # check is currently broken: https://github.com/libfuse/libfuse/issues/293
builddir="$srcdir"/fuse-$pkgver

# secfixes:
#   3.2.5-r0:
#     - CVE-2018-10906

build() {
	abuild-meson \
		-Dinitscriptdir="" \
		--default-library=both \
		. output
	meson compile -C output
}

check() {
	python3 -m pytest test/
}

package() {
	DESTDIR="$pkgdir" meson install --no-rebuild -C output

	install -Dm755 "$srcdir"/fuse.initd "$pkgdir"/etc/init.d/fuse
	# create config
	install -d "$pkgdir"/etc
	cat >"$pkgdir"/etc/fuse.conf <<- _EOF_
	# Set the maximum number of FUSE mounts allowed to non-root users.
	# The default is 1000.
	#
	#mount_max = 1000

	# Allow non-root users to specify the 'allow_other' or 'allow_root'
	# mount options.
	#
	#user_allow_other
	_EOF_
}

_common() {
	pkgdesc="Common files for fuse2 and fuse3"

	amove etc/fuse.conf
}

_openrc() {
	default_openrc
	install_if="openrc fuse-common=$pkgver-r$pkgrel"
}

sha512sums="
3e8889863cd67dada67271f095f694dc9e5aaf2561fd1e2285aee95b5a54e692bb195ab8fce57fc2bdf08d0ea17b6d56ca4967b4e4371d639d6133907b2370d3  fuse-3.16.2.tar.gz
7f6a503ef23cfa8b809c544375c2d83ad56525269b48ad1a7dff0ce36f4bf2f2a3fafed9dc70a71ff6281b261db5f01829e16c06f041921a5d8c8d715a04a8c1  fuse.initd
9b32a6ba1d1e5fcb7709eaa8e4d5e90fbdd6873ab97b0c651b6d5dda80644a4d1a7c3d1e201929d1f0b13f29422f2cdedf5127832b05d751d0ef83b53870e57a  dont-mknod-dev-fuse.patch
"
